package top.huhuiyu.teachproject.service;

import top.huhuiyu.teachproject.base.BaseDataResult;
import top.huhuiyu.teachproject.base.BaseResult;
import top.huhuiyu.teachproject.entity.TbUser;
import top.huhuiyu.teachproject.vo.UserInfo;

/**
 * 认证相关服务
 *
 * @author 胡辉煜
 */
public interface AuthService {
  String PWD_ERROR_KEY = "password_error_%s";
  String DELETED = "y";
  int ROLE_USER = 2;

  /**
   * 通过用户编号查询用户完整信息
   *
   * @param uid 用户编号信息
   * @return 用户编号对应的用户完整信息
   */
  UserInfo queryById(Integer uid);

  /**
   * 通过用户名查询用户信息，没有就返回null
   *
   * @param username 用户登录名
   * @return 对应用户登录名的用户信息
   */
  TbUser queryByName(String username);

  /**
   * 用户注册
   *
   * @param user 用户基本信息
   * @return 用户注册是否成功信息
   */
  BaseResult reg(TbUser user);

  /**
   * 用户登录，成功会返回完整用户信息
   *
   * @param user 用户登录信息
   * @return 用户登录结果
   */
  BaseDataResult<UserInfo> login(TbUser user);

  /**
   * 获取当前登录用户信息
   *
   * @return 当前登录用户信息
   */
  BaseDataResult<UserInfo> loginInfo();

  /**
   * 检查登录用户是否有访问url的权限
   *
   * @return 用户是否有访问url的权限
   */
  boolean checkAuth();
}
